home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 43 / Amiga Format CD43 (1999)(Future Publishing)(GB)(Track 1 of 2)[!][issue 1999-09].iso / -serious- / comms / other / ambos-cgi / ambos-cgi.doc next >
Text File  |  1999-06-14  |  10KB  |  306 lines

  1.  
  2.   .--------------------.
  3.   | AmBoS-CGI-Demo 1.0 |
  4.   `--------------------'
  5.  
  6.  Mit dieser Demo kann ein erster Eindruck vermittelt werden,
  7.  was mit dem AmBoS-CGI gemacht werden kann. Die CGI-Scripte
  8.  können benutzt werden, um sich den Boxinhalt anzusehen, Nach-
  9.  richten zu lesen oder Dateien zu übertragen.
  10.  Die Scripte für Upload und Senden einer Nachricht sind noch
  11.  nicht fertig.
  12.  
  13.  Getestet wurde nur mitr AWS.
  14.  
  15.  Was ist CGI (Common Gateway Interface)
  16.  --------------------------------------
  17.  
  18.  CGI ist eine Schnittstelle, welche von den meisten HTTP-Demons
  19.  unterstützt wird.
  20.  Ob es sich bei einer Anforderung durch den Clienten um ein File
  21.  oder um CGI-Scripe handelt, wird über die Anforderung durch den
  22.  Demon entschieden. Habe ich z.B. in AWS:conf/aws folgende Zeile
  23.  
  24. map /cgi-bin/ cgi aws:cgi-bin/
  25.  
  26.  und der Client fordert
  27.  
  28. http://www.hier.de/cgi-bin/jau
  29.  
  30.  so entscheidet der  Demon, daß für diese Anforderung das
  31.  CGI-Script "jau" im Verzeichnis "aws:cgi-bin" zuständig ist.
  32.  
  33.  Bei 
  34.  
  35. http://www.hier.de/cgi-bin/jau/Nu_mach_mal_was
  36.  
  37.  passiert genau dasselbe, das Script hat dann die Möglichkeit, den
  38.  angehängten String  "Nu_mach_mal_was" auszuwerten und mit etwas
  39.  Glück tatsächlich etwas zu machen ;-)
  40.  
  41.  Das ganze als Bispiel, wie es funktioniert...  
  42.  
  43.  
  44.  Installation
  45.  ------------
  46.  
  47. * Das Programm cgi-bin/AmBoS-WWW in das cgi Verzeichnis des Demoms
  48.   kopieren.
  49.  
  50. * Das Verzeichnis html/CGIGIF in das Hauptverzeichnis für die WWW-Seiten
  51.   kopieren. Bei AWS wird dieses Verzeichnis z.B. mit dem Configeintrag
  52.   map / directory aws:html/ festgelegt.
  53.  
  54. * Das Verzeichnis AmBoS-CGI-Pre in PROGDIR: des CGI-Scriptes legen,
  55.   das ist bei AWS "AWS:".
  56.  
  57. * Nun muß die eigene Hompage noch um eine Möglichkeit erweitert
  58.   werden, das CGI-Script aufzurufen.
  59.   Also eine Referenz wie HREF=/cgi-bin/AmBoS-WWW/
  60.  
  61.  Es sei noch vorsorglich erwähnt, das man natürlich mit einem "Open
  62.  local"  eines  Browsers das Programm nicht verwenden kann, da ja in
  63.  diesem Fall kein HTTP-Demon benutzt wird.
  64.  
  65.  
  66.  
  67.  Die .pre Dateien
  68.  ----------------
  69.  
  70.  Um  das  Erscheinungsbild der angezeigten WWW-Seiten möglichst frei
  71.  zu halten, wird die Seite aus kleinen Bausteinen zusammengestzt, die
  72.  jeder so abfassen kann, wie er Lust hat.
  73.  
  74.  Zu diesem Zweck ist jede Seite in 5 Teile zerlegt
  75.  
  76.  
  77.      .--------------------------.
  78.  1.  |           Kopf           |   
  79.      +--------------------------+
  80.  2.  |          Inhalt          |
  81.      +--------------------------+
  82.  3.  | Übergang zwischen Inhalt |
  83.      |    und Bedienerfeld      |
  84.      +--------------------------+
  85.  4.  |       Bedienerfeld       |
  86.      +--------------------------+
  87.  5.  |          Footer          |
  88.      `--------------------------'
  89.  
  90.  Zur Zeit gibt es drei Gruppen von .pre Dateien:
  91.  
  92.   BRETT_#?.pre für die Darstellung von Brettlisten
  93.   FILE_#?.pre  für die Darstellung von Filelisten
  94.   NEWS_#?.pre  für die Darstellung von News
  95.  
  96.  Für 1. : BRETT_HEADER.pre  , FILE_HEADER.pre  , NEWS_HEADER.pre
  97.  Für 3. : BRETT_GADSTART.pre, FILE_GADSTART.pre, NEWS_GADSTART.pre
  98.  Für 5. : BRETT_FOOTER.pre  , FILE_FOOTER.pre  , NEWS_FOOTER.pre
  99.  
  100.  Für 2. wird es noch etwas umfangreicher, weil hier einige Fälle
  101.  unterschieden werden müssn
  102.  
  103.   BRETT_BRETT.pre    ->  Einzelnes Brett
  104. * BRETT_BRETTNEW.pre ->  Einzelnes Brett, in dem etwas neues zu
  105.                          finden ist (Bezugsdatum)
  106.  
  107.   FILE_ASC.pre       ->  Einzelne Textnachricht
  108. * FILE_ASCNEW.pre    ->  Einzelne Textnachricht, die neu ist
  109.                          (Bezugsdatum)
  110.   FILE_FILE.pre      ->  Einzelnes File
  111. * FILE_FILENEW.pre   ->  Einzelnes File, das neu ist
  112.                          (Bezugsdatum)
  113.   FILE_EXT.pre       ->  Zur Darstellung einer Zeile
  114.                          einer mehrzeiligen Beschreibung
  115.                          bei Files
  116. * FILE_EXTNEW.pre    ->  Wie oben, nur halt für nach
  117.                          Bezugsdatum neue Files.
  118.  
  119.  Für  4. sind noch mehr .pre-Dateien zuständig, da in 4.  eine
  120.  Bedienerleiste aufgebaut werden soll, mit der man das ganze steuert.
  121.  
  122.   BRETT_ROOT.pre     ->  Zur Hauptebene
  123.   BRETT_PARENT.pre   ->  Eine Ebene zurück
  124.  
  125.   FILE_PARENT.pre    ->  Eine Ebene zurück zur Brettliste
  126. * FILE_SEND.pre      ->  In ein Brett senden
  127.   FILE_BACK.pre      ->  In der FileListe eine Seite zurück
  128.   FILE_NEXT.pre      ->  In der FileListe eine Seite weiter
  129.   FILE_ROOT.pre      ->  Zur Hauptebene
  130. * FILE_UPLOAD.pre    ->  File uploaden
  131.  
  132.   NEWS_PARENT.pre    ->  Zurück zumm Brettinhalt
  133.   NEWS_ROOT.pre      ->  Zur Hauptebene
  134.   NEWS_BACK.pre      ->  Eine Nachricht zurück
  135.   NEWS_NEXT.pre      ->  Eine Nachricht weiter
  136. * NEWS_REPLY.pre     ->  Nachricht beantworten
  137.  
  138.  
  139.  Alle  mit  einem  *  gekennzeichneten  .pre Files werden noch nicht
  140.  benutzt, da die entsprechenden Funktionen noch nicht fertig sind.
  141.  
  142.  Damit die .pre-Dateien nicht immer von der Platte geladen werden
  143.  müssen, kann man sie zusätzlich in das RAM:  kopieren.  Die .pre
  144.  Files werden zuerst in "RAM:AmBoS-CGI-Pre" gesucht, wenn sie dort
  145.  nicht zu finden sind, wird in "PROGDIR:AmBoS-CGI-Pre" gesucht.
  146.  
  147.  Aufbau einer .pre-Datei
  148.  -----------------------
  149.  
  150.  Der Inhalt der .pre Dateien wird in die WWW-Seite an entsprechender
  151.  Stelle eingebaut, in den .pre-Dateien können Steuersequenzen
  152.  verwendet werden, die dann durch passenden Strings ersetzt werden.
  153.  
  154.  Im Moment gibt es folgende Steuersequenzen
  155.  
  156.  $B  BrettName (Nur bei Brettern)
  157.  $D  Datum     
  158.  $F  FileName  (Nur bei Files)
  159.  $K  Betreff   (nur bei News und Files)
  160.  $L  Länge     (nur bei News und Files)
  161.  $R  Referenz
  162.  $U  Uploader  (nur bei News und Files)
  163.  $P  der aktuelle Pfad
  164.  $V  AmBoS-CGI-Version  
  165.  
  166.  Beispiel:
  167.  In BRETT_BRETT.pre steht
  168.  
  169. <LI><A HREF=$R>$B-24.24</A> $D
  170.  
  171.  daraus wird z.B.
  172.  
  173. <LI><A HREF=AmBoS-Net/>AmBoS-Net               </A> Heute          09:40:00
  174.  
  175.  $R, $B und $D wurden durch entsprechende Strings ersetzt.
  176.  
  177.  Wenden wir uns nun der seltsamen Zeichenfolge nach $B zu, hierbei
  178.  handelt es sich um ein Fragment einer C-Stringformatierung.
  179.  
  180.  Syntax [flags][min.max]
  181.  
  182.  flags  - Da gibt es nur '-' für linksbündig, läßt man das '-'
  183.           weg wird der Text rechtbündig ausgegeben.
  184.  min    - Minimale Länge der entstehenden Zeichenkette.
  185.           Ist der String (in unserem Bsp. "AmBoS-Net")
  186.           kürzer als diese Angabe, so wird er bis zu
  187.           angegebenen Länge mit Leerzeichen aufgefüllt.
  188.  max    - Maximale länge der entstehenden Zeichenkette.
  189.           Ist der String länger als diese Angabe, wird
  190.           er gekürzt.
  191.  
  192.  Diese Formatierungsmöglichkeiten sind nötig, wenn man File oder Brettlisten
  193.  mit <PRE> ausgeben muß, Tabellen sind natürlich schöner, aber außer IBrowse
  194.  kann auf dem Amiga noch keiner Tabellen....
  195.  
  196.  Auch sollte man bedenken, daß auf eine Steuersequenz kein '.', kein '-' und
  197.  keine Zahl folgen darf, wenn man damit keine Formatierung erreichen will.
  198.  
  199.  
  200.  Zugangsrechte auf die Bretter
  201.  -----------------------------
  202.  
  203.  Grundsätzlich wird die Zugangsberechtigung wie bei einem Gast
  204.  vorgenommen, man kann allerdings einer IP-Adresse auch einem User
  205.  der Box zuordnen, indem man eine Env-Variable auf den Namen des
  206.  Users setzt.
  207.  
  208.  setenv 192.168.10.2 Sysop
  209.  
  210.  sorgt dafür, daß die Zugangsberechtigungen der IP 192.168.10.2 wie
  211.  für den User Sysop vorgenommen wird.
  212.  
  213.  Wer Sliplogin anbietet, kann die Batchdateien StartSlip und StopSlip
  214.  um entsprechende setenv-Einträge erweitern.
  215.  
  216.  
  217.  Senden und Beantworten von Nachrichten
  218.  --------------------------------------
  219.  
  220.  Beim Senden nimmt das das Script die Nachricht entgegen
  221.  und macht daraus einen ZC-Puffer, der dann vom Module
  222.  einsortiert wird; das bedeutet, daß bis auf weiteres nur
  223.  User etwas senden können die auch Point sind.
  224.  Kann der IP ein User der Box zugeordnet werden (setenv IP Username),
  225.  braucht der User nur Text und Betreff eingeben.
  226.  Ist die IP unbekannt, muß zusätzlich Username und Paßwort angegeben
  227.  werden.
  228.  
  229.  Zum Senden und Antworten brauchen wir wieder ein paar .pre Dateien:
  230.  
  231.   REPLY_HEADER.pre      SEND_HEADER.pre
  232.   REPLY_GADSTART.pre    SEND_GADSTART.pre
  233.   REPLY_PARENT.pre      SEND_PARENT.pre
  234.   REPLY_ROOT.pre    SEND_ROOT.pre
  235.   REPLY_FOOTER.pre      SEND_FOOTER.pre
  236.  
  237.  Funktionieren wie die anderen .pre Dateien auch...
  238.  
  239.   SEND_OK.pre
  240.   REPLY_OK.pre
  241.  
  242.  Werden angezeigt wenn das Senden erfolgreich war.
  243.  In $R erhält man eine Referenz auf den Brettinhalt, in den gesendet
  244.  wurde.
  245.  
  246.   ERROR_HEADER.pre
  247.   ERROR_FOOTER.pre                 
  248.  
  249.  .pre Dateien für Fehlermeldungen, zwischen den beiden wird ein Text
  250.  über den aufgetretenen Fehler eingefühgt, es gibt keine Referenz ($R).
  251.  
  252.  
  253.  - AmBoS-WWW-PM -
  254.  
  255.  Ist genauso wie AmBoS-WWW zu verwenden, und stellt das Postfach
  256.  eines korrekt eingelockten User dar.
  257.  Der Verweis kann so aussehen : HREF="/cgi-bin/AmBoS-WWW-PM/"
  258.  
  259.  
  260.  - AmBoS-WWW-Antrag -
  261.  
  262.  Bearbeitet einen Antrag, d.h. das Ergebnis eines Antragsformulares
  263.  (FORM) kann zur Bearbeitung an dieses Script geschickt werden.
  264.  Das Formular für den Antrag wird dabei vom Sysop erstellt, ein Bsp.
  265.  für ein solches Formular liegt den Archiv bei (CGITML/Antrag.html).
  266.  In dem Beispielformular muß die IP-Adresse hinter ACTION= in Zeile
  267.  14 angepasst werden.
  268.  Im Antragsformular sind die NAME= Einträge von größter Wichtigkeit,
  269.  und dürfen nicht geändert werden.
  270.  Ein Minmalformular muß Usernamen und Passwort enthalten.
  271.  
  272.  
  273.  Was noch alles fehlt
  274.  --------------------
  275.  
  276.  Upload
  277.   wird es auch geben, nur leider erstmal nicht für Amiga User
  278.   da die vorhandenen Amiga-Browser diese Technik nicht
  279.   unterstützen.  Nicht-Amiga-User werden eine Uploadmöglichkeit
  280.   haben.
  281.  
  282.  Fehlermeldungen
  283.    gibt es noch keine...  wenn was daneben läuft wird stumpf nichts
  284.    angezeigt.
  285.  
  286. Mime-Types
  287.    müßen auch noch eingebaut werden um eine korrekte Identifikation
  288.    durch den Browser beim ziehen von Files zu ermöglichen.
  289.  
  290.  Desweiteren gibt es noch einen ganzen Haufen sinnvoller
  291.  Einstellungen die ein User vornehmen könnte...  da bin ich mir aber
  292.  noch nicht ganz im klaren, wie ich das machen soll...  aber auch das
  293.  wird sich finden...
  294.     
  295.  
  296.  
  297.  Bekannte Probleme
  298.  -----------------
  299.  
  300. - Wer in Brettnamen '>' oder '<' verwendet hat, wird daran nicht viel
  301.   Freude haben da es sich bei den beiden Zeichen um wichtige
  302.   Steuerzeichen von HTML handelt.
  303.  
  304.  
  305.  
  306.